#include <stddef.h>

void solve(long N,
 signed char *restrict c_c, signed char *restrict c_a, signed char *restrict c_b,
 long *restrict l_c, long *restrict l_a, long *restrict l_b,
 long *restrict l_d, long *restrict l_e, long *restrict l_f,
 long *restrict l_g, long *restrict l_h, long *restrict l_i,
 long *restrict l_j, long *restrict l_k, long *restrict l_l,
 long *restrict l_m);

#define M 16

long N = 8;
signed char c_c[M], c_a[M], c_b[M];
long l_c[M], l_a[M], l_b[M];
long l_d[M], l_e[M], l_f[M];
long l_g[M], l_h[M], l_i[M];
long l_j[M], l_k[M], l_l[M];
long l_m[M];

#include <stdio.h>
#include <time.h>

void print_c(signed char* s, const char* c)
{
	puts(c);
	for(long i = 0; i < N; i ++) printf("%d ", s[i]);
	puts("");
}

void print_l(long* s, const char* c)
{
	puts(c);
	for(long i = 0; i < N; i ++) printf("%d ", s[i]);
	puts("");
}

void fill_c(signed char* s, signed char c)
{
	for(long i = 0; i < N; i ++) s[i] = c;
}

void fill_l(long* s, long c)
{
	for(long i = 0; i < N; i ++) s[i] = c;
}


int main()
{

	fill_c(c_a, 'a');	print_c(c_a, "c_a");
	fill_c(c_b, 'b');	print_c(c_b, "c_b");
	fill_c(c_c, 'c');	print_c(c_c, "c_c");
	
	fill_l(l_a, 11);	print_l(l_a, "l_a");
	fill_l(l_b, 12);	print_l(l_b, "l_b");
	fill_l(l_c, 13);	print_l(l_c, "l_c");
	fill_l(l_d, 14);	print_l(l_d, "l_d");
	fill_l(l_e, 15);	print_l(l_e, "l_e");
	fill_l(l_f, 16);	print_l(l_f, "l_f");
	fill_l(l_g, 17);	print_l(l_g, "l_g");
	fill_l(l_h, 18);	print_l(l_h, "l_h");
	fill_l(l_i, 19);	print_l(l_i, "l_i");
	fill_l(l_j, 20);	print_l(l_j, "l_j");
	fill_l(l_k, 21);	print_l(l_k, "l_k");
	fill_l(l_l, 22);	print_l(l_l, "l_l");
	fill_l(l_m, 23);	print_l(l_m, "l_m");

	solve(N, c_c, c_a, c_b,
			l_c, l_a, l_b,
			l_d, l_e, l_f,
			l_g, l_h, l_i,
			l_j, l_k, l_l,
			l_m);

	puts("\nafter solve: ----------------------------------------------\n");

	print_c(c_a, "c_a");
	print_c(c_b, "c_b");
	print_c(c_c, "c_c");

	print_l(l_a, "l_a");
	print_l(l_b, "l_b");
	print_l(l_c, "l_c");
	print_l(l_d, "l_d");
	print_l(l_e, "l_e");
	print_l(l_f, "l_f");
	print_l(l_g, "l_g");
	print_l(l_h, "l_h");
	print_l(l_i, "l_i");
	print_l(l_j, "l_j");
	print_l(l_k, "l_k");
	print_l(l_l, "l_l");
	print_l(l_m, "l_m");

	return 0;

}
